如何更改 grub 2 的启动菜单顺序(CentOS 8, Anolis)

您所在的位置:网站首页 grub2 启动时编辑启动项 如何更改 grub 2 的启动菜单顺序(CentOS 8, Anolis)

如何更改 grub 2 的启动菜单顺序(CentOS 8, Anolis)

2024-05-17 18:06| 来源: 网络整理| 查看: 265

注,如下操作在CentOS 8 成功实现。

 

连同 GRUB_DEFAULT=saved,它确保现时选择的开机项目会被设置下次开机采用 —— 适用于双重开机的系统,因为更新 Windows 须要数次重新开机。

/boot/grub2/grubenv 档是不能手动编辑的。请采用以下指令:

[root@host ~]# grub2-set-default 4 [root@host ~]# grub2-editenv list saved_entry=4

我的电脑上启动菜单的第5项是Windows, 仅执行黄色高亮部分命令,将其设置为4时,就会默认启动Windows。

===============================================================================

在 CentOS 7 上设置 grub2

此文章主要以 Things to Know About Grub2 为基础,而对象是那些打开 /etc/grub2.cfg(或 /boot/grub2/grub.cfg)编辑开机选单的用户。

另外请参阅 上游关于 grub2 的文档 和 grub 的使用手册。

 

1. 开机选单是自动创建出来的

请勿尝试手动编辑开机选单,因为它是按照 /boot/ 目录内的文件自动创建出来的。然而你可以调整 /etc/default/grub 档内定义的通用设置,及在 /etc/grub.d/40_custom 档内加入个别自定项目。

/etc/default/grub 档的内容如下:

GRUB_TIMEOUT=5 GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet" GRUB_DISABLE_RECOVERY="true"

通用于所有项目的内核选项都通过 GRUB_CMDLINE_LINUX 行来定义。举个例说,要是你想看见详细的开机消息,删除 rhgb quiet。要是你想看见标准的开机消息,只删除 rhgb。执行以下指令便能套用更改了的设置:

[root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.14.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.14.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-605f01abef434fb98dd1309e774b72ba Found initrd image: /boot/initramfs-0-rescue-605f01abef434fb98dd1309e774b72ba.img done

UEFI 系统上的指令是 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

 

2. 如何定义缺省项目

若要列出系统开机时显示的所有选项,请执行以下指令:

[root@host ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 0 : CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64 1 : CentOS Linux 7 (Core), with Linux 3.10.0-229.4.2.el7.x86_64 2 : CentOS Linux 7 (Core), with Linux 3.10.0-229.el7.x86_64 3 : CentOS Linux 7 (Core), with Linux 0-rescue-605f01abef434fb98dd1309e774b72ba

又或者:

[root@host ~]# grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2

/etc/grub2.cfg 这个文件名指向 grub.cfg,而它的位置视乎结构而定。访问文件时采用绝对路径是较佳的做法,在维修系统时更甚。缺省的项目是通过 /etc/default/grub 档内的 GRUB_DEFAULT 行来定义。不过,要是 GRUB_DEFAULT 行被设置为 saved,这个选项便存储在 /boot/grub2/grubenv 档内。你可以这样查看它:

[root@host ~]# grub2-editenv list saved_entry=CentOS Linux (3.10.0-229.14.1.el7.x86_64) 7 (Core)

/etc/default/grub 档内另一个有用的选项是:

GRUB_SAVEDEFAULT=true

连同 GRUB_DEFAULT=saved,它确保现时选择的开机项目会被设置下次开机采用 —— 适用于双重开机的系统,因为更新 Windows 须要数次重新开机。

/boot/grub2/grubenv 档是不能手动编辑的。请采用以下指令:

[root@host ~]# grub2-set-default 2 [root@host ~]# grub2-editenv list saved_entry=2

留意上述 awk 指令输出的第一个项目的编号是 0。

现在你可重新引导系统。

 

3. 修复模式及紧急模式

Linux 0-rescue-... 这个选项会令系统进入修复模式。这等同于单独用户模式。

此外,CentOS 并提供了一个紧急模式。在这模式下,systemd 引导后便会立刻出现一个指令壳。其它程序都不会被引导,而主文件系统将会以只读模式挂载。其它文件系统都不会被挂载。

要进入紧急模式,请在 grub2 的选单按 e 键来编辑设置。然后在内核选项的末端加入 systemd.unit=emergency.target

[如果你与 systemd 关系良好 :-) 你可以在 /usr/lib/systemd/system/emergency.service 档内查看紧急模式时发生什么事情。]

 

4. Stage 1.5(core.img)的收录位置

grub/grub2 的文件都位于 /boot 文件系统内。在一个传统(非 UEFI)的 BIOS 环境下,首先会装入一个开机映像(grub 是 stage1,grub2 是 boot.img),接著是装入 stage 1.5(grub2 是 core.img),它会引导 /boot 文件系统内的程序。stage 1.5 的收录位置可以是紧接 MBR,或在 /boot 文件系统的分区内。在 CentOS 7,缺省的位置是紧接 MBR。见 此图像。

Translation of revision 10

============================================================================================================

注:以下部分是在微软翻译的基础上编辑的, 但此部分依然在CentOS 无法成功实现。

可以从命令行更改 grub 默认引导项,而无需安装任何其他工具。这不会改变列表中的顺序,但默认情况下会允许不同的操作系统启动。

首先,制作 /etc/default/grub 的备份副本。如果出现问题,你可以轻松地恢复到已知良好的副本:

sudo cp /etc/default/grub /etc/default/grub.bak

然后使用 vim 编辑文件:

sudo vim /etc/default/grub

另辟蹊径,将 TIMEOUT=5,  更改为 TIMEOUT=600(秒), 这样防止Grub 在默认的5秒内自动进入linux, 给出充足的时间让用户选择进入Windows菜单。

Binggo!

2023.12.26

===============================================

 

查找包含以下内容的行

GRUB_DEFAULT=0并将其设置为

GRUB_DEFAULT=x其中 x 是默认情况下要引导到的 grub 菜单项的索引。请注意,菜单项的索引为零。这意味着列表中的第一项是 0,第六项实际上是 5。因此,要启动到列表中的第六项,该行将显示为:

GRUB_DEFAULT=5如果您忘记了项目的顺序,请查看 /boot/grub2/grub.cfg。每个菜单项都由一行类型指定:

menuentry 'Ubuntu' [选项] {您也可以通过名称而不是索引来选择默认值,例如:

GRUB_DEFAULT='Ubuntu'如果 /boot/grub/grub.cfg 上有一个菜单项“Ubuntu”行。这可能是一种更好的方法,因为它不依赖于条目的顺序,而条目的顺序可能会发生变化。

要在“以前的 Linux 版本”子菜单中使用内核,请使用:

GRUB_DEFAULT=“Ubuntu>x 的高级选项”(确保包含引号),其中 x 是子菜单上旧内核的索引,或者是 /boot/grub/grub.cfg 中显示的内核名称。例如

GRUB_DEFAULT=“Ubuntu>Ubuntu,Linux 5.4.0-45-generic 的高级选项”然后构建更新的 grub 菜单:

sudo update-grub

 

 

 

======================================================================================



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3